<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // bind()
        // 作用:
        // 1. bind()修改函数中的this
        // 2. bind()可以调用函数
        // a) 但是不会执行函数中的代码
        // b) 有返回值,返回的结果就是当前调用的函数


        // 调用函数
        // 语法: 函数名.bind();
        // function fn() {
        //     console.log(123);
        // }
        // fn.bind();

        // 修改函数中的this指向
        // 语法: 函数名.bind(对象)
        // function fn() {
        // console.log(this);
        // }
        // fn.bind(document)();


        // 调用带有参数的函数: 语法和call完全一样

        // function fn(a, b) {
            // cnsole.log(a + b);
        // }
        // fn.bind(window, 1, 2)();


        // 总结:
        
        // call():
        // bind():
        // apply():

        // 相同点:都可以修改函数中的this指向
        // 不同点:
        // a) call()调用带有参数的函数时候,参数使用逗号离开
        // b) apply() 调用带有参数的函数时候,参数使用数组的格式
        // c) bind() 调用带有参数的函数时候,参数使用逗号隔开

        // d) bind() 在调用函数的时候,不会执行函数中的代码
        //    bind() 有返回值,返回的结果就是调用的函数
    </script>

</body>

</html>